//
//  QNUtil.h
//  QNReuseTool
//
//  Created by rsh on 2019/10/15.
//  Copyright © 2019年 rsh. All rights reserved.
//

#import <Foundation/Foundation.h>

/**
 通用工具类
 */
@interface QNUtil : NSObject

#pragma mark - 用户

/**
 截取用户名
 
 @return 用户名
 */
+ (NSString *)interceptUserName:(NSString *)userName;

#pragma mark - 时间转换
/**
 *  获取当前时间的格式化字符串
 *
 *  @param formatString 格式化方式
 *
 *  @return <#return value description#>
 */
+ (NSString *)getCurrentTimeWithFormatString:(NSString *)formatString;

/**
 *  获取指定时间的格式化字符串
 *
 *  @param formatString 格式化方式
 *  @param formatDate   格式化时间
 *
 *  @return <#return value description#>
 */
+ (NSString *)getTimeWithFormatString:(NSString *)formatString andFormatDate:(NSDate *)formatDate;

/**
 指定格式的时间字符串转date
 
 @param formatString 格式化方式
 @param dateString  时间字符串
 @return return value description
 */
+ (NSDate *)getDateWithFormatString:(NSString *)formatString andFormatDateString:(NSString *)dateString;

/**
 将某个时间转化成时间戳
 
 @param formatString 格式化方式
 @param dateString 时间字符串
 @return 时间戳
 */
+ (NSInteger)getTimestampWithFormatString:(NSString *)formatString andDateString:(NSString *)dateString;

/**
 将某个时间戳转化成时间
 
 @param timestamp 时间戳
 @param format 格式化方式
 @return 时间
 */
+ (NSString *)getTimeWithTimestamp:(NSString *)timestamp andFormatter:(NSString *)format;


/**
 获取星期几
 
 @param timeString 时间戳(秒)
 @return 周几
 */
+ (NSString *)weekdayStringFromDate:(NSString *)timeString;


/**
 判断时间差
 
 @param date1String 时间字符串
 @param date2String 时间字符串
 @return 时间差
 */
+ (NSInteger)differenceWithDate:(NSString*)date1String withDate:(NSString*)date2String;

/**
 比较两个日期的大小 日期格式为2016-08-14
 
 @param aDate a日期
 @param bDate b日期
 @return 0：相等；1：b比a大；-1：b比a小
 */
+ (NSInteger)compareDate:(NSString *)aDate withDate:(NSString *)bDate;

/**
 时间差
 
 @param startTime 开始时间
 @param endTime 结束时间
 @return 秒
 */
+ (NSTimeInterval)secondWithStartTime:(NSString *)startTime endTime:(NSString *)endTime;

/**
 获取天时分秒
 
 @param value 秒
 @return 时间
 */
+ (NSString *)getDayHourMinuteSecondWithSecond:(int)value;


+ (NSDictionary<NSString *, NSString *> *)getTimeDictWithSecond:(double)value;


// 获取当前周的周一和周日的时间
+ (NSString *)dateStrFromSundayToSaturday;


#pragma mark - 校验
/**
 *  判断字符串位為空
 *
 *  @param string 被检查字符串
 *  @param mTrim  是否除去空格和转行符
 *
 *  @return 如果为空,返回YES,否则返回NO
 */

+ (BOOL)empytOrNullRemind:(NSString*)string trim:(BOOL)mTrim;
/**
 *  校验身份证
 *
 *  @param value 身份证号码
 *
 *  @return 如果正确,返回YES,否则返回NO
 */
+ (BOOL)validateIDCardNumber:(NSString *)value;

/**
 * 验证手机号
 *
 *  @param textString <#textString description#>
 *
 *  @return 如果正确,返回YES,否则返回NO
 */
+ (BOOL)validateTelNumber:(NSString *)textString;

/**
 *  验证邮箱
 *
 *  @param email 邮箱
 *
 *  @return 如果正确,返回YES,否则返回NO
 */
+ (BOOL)validateEmail:( NSString  *)email;

/**
 校验字符串只含有数字

 @param text text
 @return YES:是 NO:否
 */
+ (BOOL)validateOnlyIntNumber:(NSString *)text;

#pragma mark - 权限校验

#pragma mark - 计算label宽高
//size
+ (CGSize)calLabelSize:(UIFont *)fontSize andStr:(NSString *)str withWidth:(CGFloat)widthSize;
//高
+ (CGFloat)calLabelHeight:(UIFont *)fontSize andStr:(NSString *)str withWidth:(CGFloat)widthSize lineSpacing:(CGFloat)lineSpacing;
//高
+ (CGFloat)calLabelHeight:(UIFont *)fontSize andStr:(NSString *)str withWidth:(CGFloat)widthSize;
//高
+ (CGFloat)calLabelHeight:(UIFont *)fontSize andStr:(NSString *)str;
//高
+ (CGFloat)calLabelHeight:(UIFont *)fontSize andStr:(NSString *)str withWidth:(CGFloat)widthSize WithHeight:(CGFloat)heightSize;
//宽
+ (CGFloat)calLabelWidth:(UIFont *)fontSize andStr:(NSString *)str withHight:(CGFloat)height;

//#pragma mark - 加密
//+ (NSString *)encryptionCode:(NSString *)pw;


/**
 打电话

 @param numStr 电话号码
 */
+ (void)dialWithPhoneNum:(NSString *)numStr;


/**
 密码正则
 
 @param inputString 电话号码
 */
+ (BOOL)inputShouldLetterOrNum:(NSString *)inputString;

/**
 校验相机权限
 */
+ (void)checkCameraSuccess:(void (^)(void))success failure:(void (^)(void))failure;

/**
 校验相册权限
 */
+ (void)checkPhotoSuccess:(void (^)(void))success failure:(void (^)(void))failure;


@end
